package com.cw.base.common.model.enums;

import java.util.Arrays;

import com.cw.lang.common.enums.IEnum;
import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * @author chenw
 * @version $$Id: EnumContext.java, v 0.1 2018/9/19 下午2:27 chenw Exp $$
 */
@Getter
@AllArgsConstructor
public enum EnumContext implements IEnum {

    /** 统一渠道流水号 */
    SERIAL_NO("SERIAL_NO", "统一渠道流水号"),
    /** 渠道编号 */
    CHANNEL_NO("CHANNEL_NO", "渠道编号"),
    /** 业务流水号 */
    TRANS_SERIAL_NO("TRANS_SERIAL_NO", "业务流水号"),
    /** 交易时间 */
    TRANS_DATETIME("TRANS_DATETIME", "交易时间"),
    /** 交易签名 */
    SIGN("SIGN", "交易签名"),
    /** 请求系统模块名称 */
    SYSTEM_ID("REQ_SYSTEM_ID", "请求系统模块名称"),
    /** 公共报文头 */
    BASE_REQUEST("RPC_BASE_REQUEST", "公共报文头"),
    /** 公共用户报文头 */
    BASE_USER_REQUEST("RPC_BASE_USER_REQUEST", "公共用户报文头"),
    /** 操作员id */
    OPERATOR_ID("OPERATOR_ID", "操作员id"),
    /** 操作员姓名 */
    OPERATOR_NAME("OPERATOR_NAME", "操作员姓名"),
    /** 机构id */
    ORGAN_ID("ORGAN_ID", "机构id"),
    /** 机构名称 */
    ORGAN_NAME("ORGAN_NAME", "机构名称"),
    ;

    /** 状态码 **/
    private String code;
    /** 状态描述 **/
    private String description;

    /**
     * 根据code查找
     *
     * @param code code
     * @return 枚举
     */
    public static EnumContext find(String code) {
        return Arrays.stream(EnumContext.values())
            .filter(input -> input.getCode()
                .equals(code))
            .findFirst()
            .orElse(null);
    }
}
